/**
 * @Name: MatchString
 * @Description:
 * @Author: Mr.Tong
 */

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 在字符串中查找匹配的子字符串
 * 源字符串：You may be out of my sight, but never out of my mind.
 * 要查找的子字符串：my
 * 输出：匹配个数为2
 */
public class MatchStringUtil {

    //方法1、通过String的indexOf(String str, int fromIndex)方法
    public static void matchStringByIndexOf(String parent, String child) {
        int count = 0;
        int index = 0;
        while ((index = parent.indexOf(child, index)) != -1) {
            index = index + child.length();
            count++;
        }
        System.out.println("匹配个数为" + count);//结果输出
    }

    //方法2、通过正则表达式
    public static void matchStringByRegularExpression(String parent, String child) {
        int count = 0;
        Pattern p = Pattern.compile(child);
        Matcher m = p.matcher(parent);
        while (m.find()) {
            count++;
            System.out.println("匹配项" + count + "：" + m.group()); //group方法返回由以前匹配操作所匹配的输入子序列。
        }
        System.out.println("匹配个数为" + count); //结果输出
    }

    //方法3、通过split方法，但此方法需考虑子字符串是否是在末尾，若在末尾则不需要-1
    public static void matchStringBySplit(String parent, String child) {
        String[] array = parent.split(child);
        System.out.println("匹配个数为" + (array.length - 1));
    }

}


